1. Field of the Invention
This invention relates to ID allocation techniques. More particularly, this invention relates to methods for allocating identification nomenclature to AV/C entities.
2. The Prior Art
The IEEE 1394 multimedia bus standard is to be the “convergence bus” bringing together the worlds of the PC and digital consumer electronics. It is readily becoming the digital interface of choice for consumer digital audio/video applications, providing a simple, low-cost and seamless plug-and-play interconnect for clusters of digital A/V devices, and it is being adopted for PCs and peripherals.
The original specification for 1394, called IEEE 1394-1995, supported data transmission speeds of 100 to 400 Mbits/second. Most consumer electronic devices available on the market have supported either 100 or 100/200 Mbits/second; meaning that plenty of headroom remains in the 1394 specification. However, as more devices are added to a system, and improvements in the quality of the A/V data (i.e., more pixels and more bits per pixel) emerge, a need for greater bandwidth and connectivity flexibility has been indicated.
The 1394a specification (pending approval) offers efficiency improvements, including support for very low power, arbitration acceleration, fast reset and suspend/resume features. However, current methods for allocating ID's to new devices are both manual and crude especially when considered in the context of “hot swappable” devices.
As indicated in the AV/C Digital Interface Command Set General Specification (hereinafter, the General Specification): an AV unit is the physical instantiation of a consumer electronic device, e.g., a camcorder or a VCR, within a Serial Bus node; an AV subunit is an instantiation of a virtual entity that can be identified uniquely within an AV unit and offers a set of coherent functions; an AV/C is an Audio/video control; and a plug is a physical or virtual end-point of connection implemented by an AV unit or subunit that may receive or transmit isochronous or other data—plugs may be Serial Bus plugs, accessible through the PCR's (PCR: is a Plug Control Register, as defined by IEC 61883, Digital Interface for Consumer Electronic Audio/Video Equipment; further, an iPCR: is an input plug PCR, as defined by IEC 61883 and an oPCR: is an output plug PCR, as defined by IEC 61883) they may be external, physical plugs on the AV unit; or they may be internal virtual plugs implemented by the AV subunits.
An AV/C target implementation is made up of multiple entities including AV/C subunits and plugs. Each separate entity has an associated ID number used to specify that entity when an AV/C controller sends a command acting upon that entity.
The implementation of the AV/C target device must ensure that the IDs used for the target entities are unique among all entities of the same type. In addition they must be between 0 and n−1 where n is the number of a particular type of entity. Thus an AV/C subunit and plug may both have an ID of 0, but two AV/C subunits may not both have an ID of 0.
The old methods for implementing AV/C target entities are to statically allocate the IDs for each entity. Thus, when implementing the software for the entities, the number of entities must be known in advance. Updating the implementation to support a new entity requires manual allocation of another ID. In addition, removal of an entity requires manual deallocation of its ID, and if its ID (m) is less than n−1 (e.g., 0≦m<n−1), thus, residing somerwhere in the middle of the identification listings, the IDs for the entities between m+1 and n−1 must be manually decremented.
Modularity of software components, and independence of implementation between software components, are elements of good software design. However, the manual allocation of IDs described above prevents total independence between the implementations of the AV/C entities. In addition, the manual allocation prevents an implementation of dynamic AV/C entities as would be needed when components are hot swapped into an AV/C device.